﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Shopping.Common
{
    /// by 赵国伟  2010-03-24  封装了一个返回值对象；
    /// </summary>
    public class ReturnValue
    {
        #region 私有变量
        private string _Message;  //返回的详细信息；
        private ResultType _Result;  //返回值类型：成功Or失败！
        private object _Data;  //附近的对象数据；用于返回一个对象数据；
        #endregion

        #region 属性
        /// <summary>
        /// 操作是否成功？
        /// </summary>
        public bool IsSucc
        {
            get
            {
                return _Result == ResultType.Success;
            }
        }
        /// <summary>
        /// 附加的数据，因为是Object类型，不推荐使用
        /// </summary>
        public object Data
        {
            set { _Data = value; }
            get { return _Data; }
        }
        /// <summary>
        /// 附加文字描述信息
        /// </summary>
        public string Message
        {
            set { _Message = value; }
            get { return _Message; }
        }
        /// <summary>
        /// 操作结果
        /// </summary>
        public ResultType Result
        {
            set { _Result = value; }
            get { return _Result; }
        }



        #endregion

        #region 构造函数
        /// <summary>
        /// 创建一个被赋值为失败的结果
        /// </summary>
        public ReturnValue()
        {
            _Result = ResultType.Fail;
            Message = "操作失败。";
        }

        public ReturnValue(ResultType result)
        {
            Result = result;
            if (result == ResultType.Success)
            {
                Message = "操作成功。";
            }
            else
            {
                Message = "操作失败。";
            }
        }

        public ReturnValue(ResultType result, string message)
        {
            Result = result;
            Message = message;
        }
        #endregion

        #region "辅助方法"
        /// <summary>
        /// 序列化为Json对象字符串
        /// </summary>
        /// <returns></returns>
        public string ToJsonString()
        {
            return JSONHelper.ObjectToJson<ReturnValue>(this);
        }

        #endregion

    }


    /// <summary>
    /// by 赵国伟 2012-04-07 泛型返回值对象；
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class ReturnValue<T>
    {
        #region 私有变量
        private string _Message;  //返回的详细信息；
        private ResultType _Result;  //返回值类型：成功Or失败！
        private T _Data;  //附近的对象数据；用于返回一个对象数据；
        #endregion

        #region 属性
        /// <summary>
        /// 操作是否成功？
        /// </summary>
        public bool IsSucc
        {
            get
            {
                return _Result == ResultType.Success;
            }
        }
        /// <summary>
        /// 附加的数据，因为是Object类型，不推荐使用
        /// </summary>
        public T Data
        {
            set { _Data = value; }
            get { return _Data; }
        }
        /// <summary>
        /// 附加文字描述信息
        /// </summary>
        public string Message
        {
            set { _Message = value; }
            get { return _Message; }
        }
        /// <summary>
        /// 操作结果
        /// </summary>
        public ResultType Result
        {
            set { _Result = value; }
            get { return _Result; }
        }



        #endregion

        #region 构造函数
        /// <summary>
        /// 创建一个被赋值为失败的结果
        /// </summary>
        public ReturnValue()
        {
            _Result = ResultType.Fail;
            Message = "操作失败。";
        }

        public ReturnValue(ResultType result)
        {
            Result = result;
            if (result == ResultType.Success)
            {
                Message = "操作成功。";
            }
            else
            {
                Message = "操作失败。";
            }
        }

        public ReturnValue(ResultType result, string message)
        {
            Result = result;
            Message = message;
        }
        #endregion

        #region "辅助方法"
        /// <summary>
        /// 序列化为Json对象字符串
        /// </summary>
        /// <returns></returns>
        public string ToJsonString()
        {
            return JSONHelper.ObjectToJson<ReturnValue<T>>(this);
        }

        #endregion

    }



    #region 常数
    public enum ResultType
    {
        Success = 1,
        Fail = 0
    }

    #endregion
}
